package com.oneday.nuo.base.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oneday.nuo.base.dto.NuoAuthDTO;
import com.oneday.nuo.base.entity.NuoAuthEntity;
import com.oneday.nuo.base.security.user.NuoAuth;

import java.util.List;

/**
 * 权限表(NuoAuth)表服务接口
 *
 * @author liushuai
 * @since 2021-03-13 23:36:52
 */
public interface NuoAuthService {

    /**
     * 保存权限
     * @Author: liushuai
     * @Date: 2021/3/21 13:08
     * @param : * @param nuoAuthDTO
     * @return :void
     **/
    void saveAuth(NuoAuthDTO nuoAuthDTO);
    /**
     * 根据权限id查询权限
     * @Author: liushuai
     * @Date: 2021/3/21 13:08
     * @param : * @param authId
     * @return :com.oneday.nuo.base.entity.NuoAuthEntity
     **/
    NuoAuthEntity queryByAuthId(String authId);
     /**
      * 根据权限id删除权限
      * @Author: liushuai
      * @Date: 2021/3/21 13:08
      * @param : * @param authId
      * @return :void
      **/
    void deleteByAuthId(String authId);
    /**
     * 根据参数分页查询
     * @Author: liushuai
     * @Date: 2021/3/21 13:09
     * @param : * @param page
     * @param nuoAuthDTO
     * @return :com.baomidou.mybatisplus.core.metadata.IPage<com.oneday.nuo.base.entity.NuoAuthEntity>
     **/
    IPage<NuoAuthEntity> queryAuthPageByParam(Page page, NuoAuthDTO nuoAuthDTO);
    /**
     * 查询所有权限加菜单
     * @Author: liushuai
     * @Date: 2021/3/30 22:33
     * @param : * @param
     * @return :java.util.List<cn.hutool.core.lang.tree.Tree<java.lang.String>>
     **/
    List<Tree<String>> queryAuthAll();

    /**
     * 根据用户id获取权限
     * @Author liushuai
     * @param userId :
     * @return java.util.List<com.oneday.nuo.base.security.user.NuoAuth>
     * @throws
     * @Date 2021/4/22 0022 19:18
     */
    List<NuoAuth> queryAuthByUserId(Long userId);
}
